package com.coderman.generateSqlBatchTools.service;

import com.coderman.generateSqlBatchTools.bean.ColumnBean;

import java.util.Map;

/**
 * Created by ${fanchunshuai} on 2017-4-8.
 *
 * @version: V1.0
 * @Desc: 服务接口，提供读取xlsx格式的excel文件的接口来生成定制化的sqlbatch内容
 * @Copyright (c) 2017 58到家-版权所有
 */
public interface IGenerateSqlTools {


    /**
     * 提供基于excel.xlsx格式的数据文件批量生成insert语句
     * @param excelFilePath  excel文件的读取路径
     * @param outDataType    sql导出类型 0:打印控制台 1:输出到指定文件 2:输出到日志组件
     * @param outPath        如果outDataType == 1 && outPath != blank 则将sql内容输出到该路径下，建议输出文件格式为.txt or .sql
     * @param fromIndex      从excel的第几行开始读取，默认是1，第0行可能是表头
     * @param columnBeanMap  excel中的列数据和mysql表中的字段对应关系
     * @param tableName      要插入的表名
     * @return
     */
    boolean generateInsertBatchSql(String excelFilePath, int outDataType, String outPath
            , int fromIndex, Map<String,ColumnBean> columnBeanMap, String tableName) throws Exception;

    /**
     * 提供基于excel.xlsx格式的数据文件批量生成delete语句
     * @param excelFilePath  excel文件的读取路径
     * @param outDataType    sql导出类型 0:打印控制台 1:输出到指定文件 2:输出到日志组件
     * @param outPath        如果outDataType == 1 && outPath != blank 则将sql内容输出到该路径下，建议输出文件格式为.txt or .sql
     * @param fromIndex      从excel的第几行开始读取，默认是1，第0行可能是表头
     * @param columnBeanMap  excel中的列数据和mysql表中的字段对应关系 内容是where 后面的条件字段
     * @param tableName      要删除的表名
     * @return
     */
    boolean generateDeleteBatchSql(String excelFilePath, int outDataType, String outPath
            ,int fromIndex, Map<String,ColumnBean> columnBeanMap, String tableName);

    /**
     * 提供基于excel.xlsx格式的数据文件批量生成delete语句
     * @param excelFilePath  excel文件的读取路径
     * @param outDataType    sql导出类型 0:打印控制台 1:输出到指定文件 2:输出到日志组件
     * @param outPath        如果outDataType == 1 && outPath != blank 则将sql内容输出到该路径下，建议输出文件格式为.txt or .sql
     * @param fromIndex      从excel的第几行开始读取，默认是1，第0行可能是表头
     * @param columnBeanMap  excel中的列数据和mysql表中的字段对应关系 内容是set后面的设置值的字段
     * @param whereBeanMap  excel中的列数据和mysql表中的字段对应关系 内容是where 后面的查询条件字段
     * @param tableName      要删除的表名
     * @return
     */
    boolean generateUpdateBatchSql(String excelFilePath, int outDataType, String outPath
            ,int fromIndex, Map<String,ColumnBean> columnBeanMap,Map<String,ColumnBean> whereBeanMap, String tableName);

}
